package cn.getech.data.development.service;

import cn.getech.data.development.entity.BdpDataCategory;
import cn.getech.data.development.model.dto.ProjectListDTO;
import cn.getech.data.development.model.dto.real.RealTableQueryDTO;
import cn.getech.data.development.model.dto.real.RealTableQueryReturnDTO;
import cn.getech.data.development.model.vo.BdpDataCategoryTableInfoVO;
import cn.getech.data.intelligence.common.utils.PageUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;
import java.util.Map;
import java.util.Set;


/**
 * 类目信息表Service接口
 *
 * @author yang
 * @version 1.0.0 2020-09-29
 */
public interface BdpDataCategoryService {
    /**
     * 根据查询条件分页查询类目信息表列表
     *
     */
    List<BdpDataCategory> findBdpDataCategoryByCondition();

    /**
     * 类目名称模糊查询
     * @param CategoryName
     * @return
     */
    BdpDataCategory  getCategoryName(String CategoryName);

    /**
     * 根据类目主键ID查询类目信息表信息
     *
     * @param partch 主键ID
     * @return 类目信息表信息
     */
     PageUtils getBdpDataCategoryById(Map<String, Object> partch);

    /**
     *  分页查询不在该内目下的表信息
     * @param partch
     * @return
     */
    PageUtils getNotBdpDataCategoryById(Map<String, Object> partch);

    /**
     * 新增类目信息表信息
     *
     * @param bdpDataCategory 类目信息表信息
     * @return 是否成功
     */
    boolean addBdpDataCategory(BdpDataCategory bdpDataCategory);

    /**
     * 修改类目信息表信息
     *
     * @param bdpDataCategory 类目信息表信息
     * @return 是否成功
     */
    boolean updateBdpDataCategory(BdpDataCategory bdpDataCategory);

    /**
     * 根据主键ID删除类目信息表
     *
     * @param id 主键ID
     * @return 是否成功
     */
    int deleteBdpDataCategoryById(Integer id);


    /***
     * 判断类目下是否有表信息
     * @param id
     * @return
     */
    boolean ifataCategoryBastInfo(String id);

    /***
     * 根据主键id保存类目表信息
     * @param idList
     * @return
     */
    boolean saveBdpDataCategoryByIds(BdpDataCategoryTableInfoVO idList);


    /**
     * 根据主键ID列表批量删除类目信息表
     *
     * @param idList 主键ID列表
     * @return 是否成功
     */
    boolean deleteBdpDataCategoryByIds(BdpDataCategoryTableInfoVO idList);


    /**
     * 查询项目列表
     * @param partch
     * @return
     */
    Set<String>getProcNameList(Map<String, Object> partch);

    /**
     * 查询表创建人
     * @param partch
     * @return
     */
    List<String>getTableInfoCrateName(Map<String, Object> partch);

    /***
     *  查询数据库
     * @param params
     * @return
     */
    List<String> getDBTableList(Map<String, Object> params);

    /**
     * 查询不在该类目下的表信息(实时表)
     *
     * @param tableQueryDTO
     * @return
     */
    IPage<RealTableQueryReturnDTO> getRealTable(RealTableQueryDTO tableQueryDTO);

    Set<ProjectListDTO> projectList();

    List<Map> getTableByCategoryIdAndDb(Integer categoryId, String dbName);
}